package test;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import expression.PostfixEvaluator;

// Postfix evaluator test
public class WinstonCheongPETest{

	@Before
	public void setUp() throws Exception{}

	@After
	public void tearDown() throws Exception{}

	@Test
	public void testBasics(){

		assertTrue(PostfixEvaluator.eval("1 2 +") == 3);
		assertTrue(PostfixEvaluator.eval("12 3 -") == 9);
		assertTrue(PostfixEvaluator.eval("3 12 -") == -9);
		assertTrue(PostfixEvaluator.eval("12 3 *") == 36);
		assertTrue(PostfixEvaluator.eval("12 3 /") == 4);
		assertTrue(PostfixEvaluator.eval("3 12 /") == 0);
		assertTrue(PostfixEvaluator.eval("2 12 ^") == 4096);
		assertTrue(PostfixEvaluator.eval("12 2 ^") == 144);
	}

	@Test
	public void testCombinations(){
		assertEquals(PostfixEvaluator.eval("12 5 + 7  -"), 10);
		assertTrue(PostfixEvaluator.eval("12 5 + 7 -") == 10);
		assertTrue(PostfixEvaluator.eval("2 2 3 ^ ^") == 256);
		assertTrue(PostfixEvaluator.eval("2 2 ^ 3 ^") == 64);
		assertTrue(PostfixEvaluator.eval("15 3 / 7 + 3 -") == 9);
	}

}
